Index: contrib/bind/Version
===================================================================
RCS file: /tmp/ncvs/src/contrib/bind/Version,v
retrieving revision 1.1.1.12
diff -c -r1.1.1.12 Version
*** contrib/bind/Version	17 Jun 2003 08:23:21 -0000	1.1.1.12
--- contrib/bind/Version	26 Nov 2003 16:44:32 -0000
***************
*** 1 ****
! 8.3.6-REL
--- 1 ----
! 8.3.6-REL-p1
Index: contrib/bind/bin/named/ns_resp.c
===================================================================
RCS file: /tmp/ncvs/src/contrib/bind/bin/named/ns_resp.c,v
retrieving revision 1.1.1.12
diff -c -r1.1.1.12 ns_resp.c
*** contrib/bind/bin/named/ns_resp.c	17 Jun 2003 08:23:57 -0000	1.1.1.12
--- contrib/bind/bin/named/ns_resp.c	26 Nov 2003 16:49:41 -0000
***************
*** 271,277 ****
  	int soacount;
  	u_int qtype, qclass;
  	int validanswer, dbflags;
! 	int cname, lastwascname, externalcname;
  	int count, founddata, foundname;
  	int buflen;
  	int newmsglen;
--- 271,277 ----
  	int soacount;
  	u_int qtype, qclass;
  	int validanswer, dbflags;
! 	int cname, lastwascname, externalcname, cachenegative;
  	int count, founddata, foundname;
  	int buflen;
  	int newmsglen;
***************
*** 911,916 ****
--- 911,917 ----
  	cname = 0;
  	lastwascname = 0;
  	externalcname = 0;
+ 	cachenegative = 1;
  	strcpy(aname, qname);
  
  	if (count) {
***************
*** 980,985 ****
--- 981,987 ----
  						 name);
  				db_detach(&dp);
  				validanswer = 0;
+ 				cachenegative = 0;
  				continue;
  			}
  			if (type == T_CNAME &&
***************
*** 1014,1019 ****
--- 1016,1022 ----
  				 "last was cname, ignoring auth. and add.");
  				db_detach(&dp);
  				validanswer = 0;
+ 				cachenegative = 0;
  				break;
  			}
  			if (i < arfirst) {
***************
*** 1029,1034 ****
--- 1032,1038 ----
  							sin_ntoa(from));
  						db_detach(&dp);
  						validanswer = 0;
+ 						cachenegative = 0;
  						continue;
  					} else if (!ns_samedomain(name,
  							       qp->q_domain)) {
***************
*** 1042,1047 ****
--- 1046,1052 ----
  							 sin_ntoa(from));
  						db_detach(&dp);
  						validanswer = 0;
+ 						cachenegative = 0;
  						continue;
  					}
  					if (type == T_NS) {
***************
*** 1205,1212 ****
  	     )
  	    )
  	{
! 		cache_n_resp(msg, msglen, from, qp->q_name,
! 			     qp->q_class, qp->q_type);
  
  		if (!qp->q_cmsglen && validanswer) {
  			ns_debug(ns_log_default, 3,
--- 1210,1218 ----
  	     )
  	    )
  	{
! 		if (cachenegative)
! 			cache_n_resp(msg, msglen, from, qp->q_name,
! 				     qp->q_class, qp->q_type);
  
  		if (!qp->q_cmsglen && validanswer) {
  			ns_debug(ns_log_default, 3,
